This invention relates to signal processing systems and, more particularly, to generating native processor code for processing signals using a graphical signal processing design system.
Signal processing is important in music and video creation, modification, and storage. In many applications a signal is modified, for example, to reduce or emphasize some aspect of a signal, or to extract some portion or characteristic of the signal. For example, an audio or video developer can generate new signals or modify stored or live signals. A sound developer may create a series of filters to achieve a particular sound effect. A musician can create a new instrument, or modify the sound of an already existing instrument to sound like a new instrument. A video developer can implement a particular type of fade, or a interesting special effect using a signal processing system.
With the use of digital computers, it became possible to simulate signal processing systems on computers. As computer performance improved, it became possible to implement signal processing algorithms on a computer in real time. It is now possible to implement a signal processing algorithm in software on a general purpose computer. This is very useful for audio or video developers who wish to create and modify signals using commonly available tools.
One approach for implementing a signal processing system on a general purpose computer is for a developer to write a computer program that implements a particular signal processing system. A program implementing the signal processing system is often developed in a programming language like Basic, Pascal, or C. This is beyond the capacity of many users, and can be difficult to modify and change.
Another approach is to implement a signal processing system on a high performance computer that is attached to the general purpose computer. This approach is expensive because it requires additional hardware normally not found in a general purpose computer. Also, it is often not possible to easily incorporate systems designed with this approach into music and video development applications.
The present invention provides a software application that allows a user to easily generate a signal processing system. The user designs the system graphically and then the graph is compiled into native processor code. Because it is implemented in native processor code, the signal processing system can be run on a computer with minimal resources. The signal processing system implemented in native processor code can also be incorporated into other computer applications, so that the developed signal processing system is portable and useful.
In general, in one aspect, the invention features a system for automatically generating native processor code. The system includes a graphical designer for allowing a user to construct graphically a signal processing system, and it includes a compiler for receiving the graphically constructed signal processing system and for generating native processor code representative of the signal processing system.
Embodiments of this aspect of the invention include the following features. In some embodiments, the compiler includes an optimizer for generating optimized native processor code. In some embodiments, the signal processing system is an audio signal processing system. In some embodiments, the signal processing system is a video signal processing system. In some embodiments, the graphical designer allows the user to construct the signal processing system graphically by placing one or more signal processing elements between a system input and system output. In some embodiments the graphical designer allows the user to encapsulate two or more of the signal processing elements between the system input and output. In some embodiments, the signal processing elements include an arithmetic operation element and/or a delay element. Many other types of elements can also be used, as will be understood by those of ordinary skill.
In general, in another aspect, the invention features a system for modifying input signals. The system includes a graphical designer for allowing a user to construct graphically a signal processing system, a compiler, and an execution unit. The compiler receives the graphically constructed signal processing system and generates machine code representative of the system. The execution unit receives at least a portion of the machine code and input signals and executes the machine code to produce a version of the input signal that is modified according to the signal processing system.
Embodiments of this aspect of the invention include the following features. In some embodiments, the system includes a module for receiving at least a portion of the machine code and the input signals and for executing the machine code to produce the output and for providing the output to a main application. In some embodiments, the graphical designer allows the user to construct graphically the signal processing system by placing one or more signal processing elements between a system input and a system output. In some embodiments the graphical designer allows the user to encapsulate two or more of the signal processing elements into a single encapsulated signal processing element to allow the user to construct graphically a hierarchical signal processing system having one or more of the encapsulated signal processing elements between the system input and output. In some embodiments the compiler includes an optimizer for generating optimized machine code.
In general, in another aspect, the invention features a system for use with a main application. The system includes a loader for receiving machine code representative of a signal processing system. The system also includes an execution unit for receiving at least a portion of the machine code from the loader and input signals and for executing the machine code to produce as an output a version of the input signals that is modified according to the signal processing system. The system further includes an interface module for receiving the output from the execution unit and for interfacing with the main application to provide the output to the main application.
Embodiments of this aspect of the invention include the following features. In some embodiments, the main application comprises a music processing application. In some embodiments, the input signals comprise audio signals and the signal processing system comprises an audio signal processing system. In some embodiments, the input signals comprise video signals and the signal processing system comprises a video signal processing system.
The foregoing and other objects, aspects, features, and advantages of the invention will become more apparent from the following description and from the claims.